package com.jisf.driver.service;

import com.jisf.driver.entity.po.Course;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jisf.driver.entity.vo.CourseCoachVo;
import com.jisf.driver.entity.vo.CourseListVo;
import com.jisf.driver.entity.vo.StudentCourseVo;
import com.jisf.driver.response.ResultCode;

import java.util.Date;
import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author jisf
 * @since 2022-05-06
 */
public interface ICourseService extends IService<Course> {

    /**
     * 获取已预约课程
     * @return
     */
    List<StudentCourseVo> getStudentCourse();

    /**
     * 获取课程教练信息
     * @param coachId
     * @return
     */
    CourseCoachVo getCourseCoach(Integer coachId);

    /**
     * 取消预约的课程
     * @param id
     * @return
     */
    ResultCode cancelCourse(Integer id);

    /**
     * 获取教练的课程预约情况
     * @param id
     * @return
     */
    List<Course> getCoachCourse(Integer id, String date);

    /**
     * 获取教练的课程预约情况
     * @param date
     * @return
     */
    List<Course> getCoachCourse(Integer id, Date date);

    /**
     * 获取课程可预约日期
     * @return
     */
    List<String> getCourseAppointDate();

    /**
     * 预约课程
     * @param course
     * @return
     */
    ResultCode appointCourse(Course course);

    /**
     * 删除已完成课程
     */
    void removeCompleteCourse();

    /**
     * 教练获取预约课程
     * @param date
     * @return
     */
    List<CourseListVo> getCoachCourse(String date);

    /**
     * 教练获取预约课程
     * @param date
     * @return
     */
    List<Course> getCoachCourse(Date date);

    /**
     * 获取课程修改日期
     * @return
     */
    List<String> getCourseUpdateDate();

    /**
     * 关闭预约
     * @param courseListVo
     * @return
     */
    ResultCode closeAppoint(CourseListVo courseListVo);

    /**
     * 开启预约
     * @param courseListVo
     * @return
     */
    ResultCode openAppoint(CourseListVo courseListVo);
}
